package controller;

import java.lang.IllegalArgumentException;

import model.PontoModel;

public class PontoController{

    /* Distancia entre dois pontos */
    public double distancia(PontoModel ponto1, PontoModel ponto2){
        double x, y;
        double distancia1, distancia2;

        x = ponto1.getX();
        y = ponto1.getY();

        /* Checa se o ponto ponto1 eh valido */
        if(x == Double.NaN || x == Double.POSITIVE_INFINITY || x == Double.NEGATIVE_INFINITY){
           throw new IllegalArgumentException("Impossivel calcular a distancia para infinito");
        }
        if(y == Double.NaN || y == Double.POSITIVE_INFINITY || y == Double.NEGATIVE_INFINITY){
            throw new IllegalArgumentException("Impossivel calcular a distancia para infinito");
        }

        x = ponto2.getX();
        y = ponto2.getY();

        /* Checa se o ponto ponto2 eh valido */
        if(x == Double.NaN || x == Double.POSITIVE_INFINITY || x == Double.NEGATIVE_INFINITY){
            throw new IllegalArgumentException("Impossivel calcular a distancia para infinito");
        }
        if(y == Double.NaN || y == Double.POSITIVE_INFINITY || y == Double.NEGATIVE_INFINITY){
            throw new IllegalArgumentException("Impossivel calcular a distancia para infinito");
        }

        distancia1 = Math.abs(ponto1.getX() - ponto2.getX());
        distancia2 = Math.abs(ponto1.getY() - ponto2.getY());

        /* Retorna a distancia euclidiana entre os dois pontos */
        return Math.sqrt(distancia1*distancia1 + distancia2*distancia2);
    }
}
